package com.huangtang.pc.util;


import cn.hutool.core.util.StrUtil;
import com.huangtang.pc.enums.IEnum;
import com.huangtang.pc.pojo.vo.enums.EnumVO;

import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

/**
 * 枚举类Utils
 * @author sunjf
 * @date   2024-01-02
 */
public class EnumUtil {

    /**
     * 根据value获取枚举label
     *
     * @param eClass 枚举类
     * @param label label
     * @param <T> 泛型
     * @return value
     */
    public static <T extends IEnum> String getByValue(Class<T> eClass, Integer label) {
        return StrUtil.toString(Arrays.stream(eClass.getEnumConstants())
                .filter(i -> Objects.equals(i.getLabel(), label))
                .map(IEnum::getValue)
                .findFirst());
    }

    /**
     * 获取枚举所有属性
     *
     * @param eClass 枚举类
     * @param <T> 泛型
     * @return List<EnumVO>
     */
    public static <T extends IEnum> List<EnumVO> getEnumList(Class<T> eClass) {
        return Arrays.stream(eClass.getEnumConstants()).map(i -> {
            EnumVO enumVO = new EnumVO();
            enumVO.setLabel(i.getLabel());
            enumVO.setValue(i.getValue());
            return enumVO;
        }).collect(Collectors.toList());
    }
}
